package com.sitia.jd.service;

import com.sitia.jd.domain.MxOrder;
import com.sitia.jd.domain.MxOrderDetail;
import com.sitia.jd.domain.dto.JdCouponDto;
import com.sitia.jd.domain.vo.MxOrderVo;

import java.util.List;

/**
 * mx订单Service接口
 * 
 * @author sitia
 * @date 2023-05-22
 */
public interface IMxOrderService 
{
    /**
     * 查询mx订单
     * 
     * @param id mx订单主键
     * @return mx订单
     */
    public MxOrder selectMxOrderById(String id);

    /**
     * 查询mx订单列表
     * 
     * @param mxOrder mx订单
     * @return mx订单集合
     */
    public List<MxOrder> selectMxOrderList(MxOrder mxOrder);

    /**
     * 新增mx订单
     * 
     * @param mxOrder mx订单
     * @return 结果
     */
    public int insertMxOrder(MxOrder mxOrder);

    /**
     * 修改mx订单
     * 
     * @param mxOrder mx订单
     * @return 结果
     */
    public int updateMxOrder(MxOrder mxOrder);

    /**
     * 批量删除mx订单
     * 
     * @param ids 需要删除的mx订单主键集合
     * @return 结果
     */
    public int deleteMxOrderByIds(String[] ids);

    /**
     * 删除mx订单信息
     * 
     * @param id mx订单主键
     * @return 结果
     */
    public int deleteMxOrderById(Integer id);

    /**
     * 添加用户订单
     * @param mxOrder
     * @return
     */
    int insertUserOrder(MxOrder mxOrder);

    /**
     * 根据Cookie完成订单
     * @param mxOrder
     * @return
     */
    int completeOrder(MxOrder mxOrder);

    /**
     * 从管理员页面生成订单
     * @param
     * @return
     */
    int addAdminOrder(MxOrderVo vo);

    /**
     * 根据权限查询当前用户
     * @param mxOrder
     * @return
     */
    List<MxOrder> selectMxOrderListByAuthority(MxOrder mxOrder);

    /**
     * 更新当前订单最新的登陆状态
     * @param mxOrder
     * @return
     */
    int updateOrderLoginStatus(MxOrder mxOrder);
    /**
     * 根据Cookie获取账户优惠券列表
     * @param mxOrder
     * @return
     */
    List<JdCouponDto> getCouponList(MxOrder mxOrder);

    /**
     * 改变是否添加返利状态接口 （根据id完成订单）
     */
    int changAddRebate(MxOrder mxOrder);

    /**
     * 改变是否添加返利状态接口 （根据Cookie完成订单）
     */

    int changAddRebateStatusByCookie(MxOrder mxOrder);

    /**
     * 获取订单详细
     * @param id
     * @return
     */
    MxOrderDetail getOrderDetail(String id);
    /**
     * 刷新今日抢购的cookie状态
     * @return
     */
    void refreshTodayCookieStatus();

    /**
     * 批量更新
     * @param vo
     */
    void batchUpdate(MxOrderVo vo);

    /**
     * 获取网页列表 【权限】
     * @param mxOrder
     * @return
     */
    List<MxOrder> selectMxOrderPageListByPermission(MxOrder mxOrder);

    /**
     * 获取网页列表
     * @param mxOrder
     * @return
     */
    List<MxOrder> selectMxOrderPageList(MxOrder mxOrder);

}
